
oldLines=[]
newLines=[]
lineCom=False
lcCount=0  #0初始化 1遇到/ 2又遇/
blockCom=False #0初始化 1遇到/ 2遇到*  要考虑到**的情况
bcConut=0

fileName=input("请输入文件名:")
with open(fileName,'r') as f:
    oldLines=f.readlines()


#1.迭代行
for index,oldline in enumerate(oldLines):
    newLine=[]  #定义一个列表用来存放单个的字符(此处可以用字符串变量替代)
    lineCom=False   
    lcConut=0       #重置 行注释相关参量
#2.迭代行中的每个字符 
    for subindex,schar in enumerate(oldline):
        #2.1若到了行尾部
        if subindex==len(oldline)-1 :        #到达行尾部的换行符(必须限定行尾部 因为print中也可能包含\n)   
            if len(newLine):                        #只有当前行非空才会给到newLines中
                newLine.append(schar)
                newLines.append("".join(newLine))
        #2.2若当前在块注释中 
        elif blockCom: 
            if schar=='/' and bcConut==2:           ##匹配到了一个完整的块结束标记
                blockCom=False
                bcConut=0
                print("匹配到块注释结束")
            elif schar=='*':                        ##拟匹配到一个块结束开头 但仍然处于块注释中
                bcConut=2
        #2.3 若是在行注释内 跳过本行的一个字符
        elif lineCom:
            continue
        #2.4 若不在任何注释中 则应开始寻找是否存在注释开始的标志
        #2.4.1 若遇到一个/  
        elif schar=='/':                         
            lcCount=lcCount+1   #则lc计数器加1
            if lcCount==2:      #根据lc判断是否出现的是连续的//    
                lineCom=True
                lcCount=0
                newLine.pop()                   #剔除掉上一步误加入的/
                print("匹配到行注释")   
            else:               #若不是连续的/或是首个/ 一律当一般符号看待 同时bc计数器置1 表明已遇到一个/    
                newLine.append(schar)
                bcConut=1
        #2.4.2 若遇到一个*        
        elif schar=='*':
            if bcConut==1:                      #若bc计数器是1 说明前方是一个/ 则发现了块注释开始
                blockCom=True                   
                bcCount=0
                newLine.pop() 
                print("匹配到块注释开始")
            else:
                newLine.append(schar)
                bcConut=0                       #若前面没有/ 则表明遇到一个正常的符号*
        #常规文本行字符 清空计数器  加入字符到新行列表中 
        else:                                   
          newLine.append(schar)
          bcConut=0                           #遇到其他字符 立马清空计数器
          lcCount=0

if blockCom:
    newLines.append("error")
with open("output.txt",'w') as f:
    for line in newLines:
        f.write(line)
    
